/**
 * 给定N，要求找到一个N的排列，使得其前缀和数组对N取模之后也是一个0~N-1的排列
 * 如果不能则输出-1
 * 简单打表就能发现奇数不能(1除外)，偶数的话均存在以[N,1,...]开头的答案
 * 于是有一个构造方法，前缀和对N取模按如下顺序构造：
 * 0 1 -1 2 -2 3 -3 ...
 * 刚好是正确的
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;

int N;

void proc(){
    if(1 == N) return (void)(cout << 1 << endl);
    if(N & 1) return (void)(cout << -1 << endl);

    vector<int> vec(N);
    vec[0] = N;
    int k = 1;
    int s = N;
    for(int i=1;i<N;++i){
        vec[i] = ((k - s) % N + N) % N;
        if(i & 1) k *= -1;
        else k = k * -1 + 1;
        s = (s + vec[i]) % N;
    }
    for(auto i : vec) cout << i << " ";
    cout << endl;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase; cin >> nofkase;
    while(nofkase--){
        cin >> N;
        proc();
    }
    return 0;
}